﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Icoders.MarketTracker.Reports.Lib.Domain;
using Icoders.MarketTracker.Reports.Lib.Domain.Transactions;
using Icoders.MarketTracker.Reports.Lib.Domain.Users;

namespace Icoders.MarketTracker.Reports.Lib.Repository.Transactions
{
   public interface IReportRepository
    {
       List<PurchaseReport> GetReport(DateTime? startDate, DateTime? endDate);
       List<SaleReport> GetSaleReport(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop);
       List<PointOfPurchaseReport> GetPointOfPurchase(int areaId=0, int countryId =0, int cityId=0, int zoneId=0);
       List<SaleVolume> GetTotalSaleVoume(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop);
       List<SalePerSku> GetSalePerSku(DateTime? startDate, DateTime? endDate,int product,int country,int city,int area,int zone,int fsr, int pop);
       List<Callage> GetCallage(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop);
       List<NoneSaleReason> GetNoneSaleReason(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop);
       List<Availability> GetAvailability(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop);
       List<DropSize> GetDropSize(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop);
       List<SaleVolumeByPeriod> GetSaleVolumePerPeriod(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop, DateMode dateMode);
       List<CallageByPeriod> GetCallageByPeriod(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop, DateMode dateMode);
       List<CallageEfficiency> GetCallageEfficiency(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop);
       List<CompareProduct> GetCompareProduct(DateTime? startDate, DateTime? endDate, int productA, int productB, int country, int city, int area, int zone, int fsr, int pop);
       List<OutletVisit> GetOutletVisit(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop);
       List<OutletVisitSaleAndHasStock> GetOutletVisitSaleAndHasStock(DateTime? startDate, DateTime? endDate, int product, int country, int city, int area, int zone, int fsr, int pop);
       

    }
}
